package com.spring.pick2pick.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import org.springframework.stereotype.Repository;

import com.spring.pick2pick.common.PageHandler;
import com.spring.pick2pick.model.GameItem;

/** 경기의 기능을 처리하는 Dao */
@Repository
public class GameDao {
	
	@Autowired
	private SqlMapClientTemplate sqlMapClientTemplate;
	
	/** 경기 추가 기능 */
	public int addGame(GameItem item) {
		return (Integer) sqlMapClientTemplate.insert("game.addGame", item);
	}
	
	/** 경기 수정 기능 */
	public int editGame(GameItem item) {
		return (Integer) sqlMapClientTemplate.update("game.editGame", item);
	}
	public int editGameResult(GameItem item) {
		return (Integer) sqlMapClientTemplate.update("game.editGameResult", item);
	}
	
	/** 경기결과 수정 기능 */
	public int gameResult(GameItem item) {
		return (Integer) sqlMapClientTemplate.update("game.gameResult", item);
	}
	
	/** 경기 조회 기능 */
	public GameItem getGame(GameItem item) {
		return (GameItem) sqlMapClientTemplate.queryForObject("game.getGame", item);
	}
	
	/** 경기 전시여부 기능 */
	public int editDisplay(GameItem item) {
		return (Integer) sqlMapClientTemplate.update("game.editDisplay", item);
	}
	
	/** 활성 팀 카운트 */
	public int getDisplayCount(String where) {
		return (Integer) sqlMapClientTemplate.queryForObject("game.getDisplayCount", where);
	}
	
	/** 비활성 팀 카운트 */
	public int getUnDisplayCount(String where) {
		return (Integer) sqlMapClientTemplate.queryForObject("game.getUnDisplayCount", where);
	}
	
	/** 경기 리스트 기능 */
	@SuppressWarnings("unchecked")
	public List<GameItem> getGameList(int page, int size, String where, String order) {
		
		int total = (Integer) sqlMapClientTemplate.queryForObject("game.getGameListCount", where);
		
		if (total == 0) {
			PageHandler.freeInstance();
		} else {
			PageHandler.getInstance(page, total, size, 10);
		}
		
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("start", PageHandler.getInstance().getStartRec());
		map.put("end", PageHandler.getInstance().getPageArticleCount());
		map.put("where", where);
		map.put("order", order);
		
		return sqlMapClientTemplate.queryForList("game.getGameList", map);
	}

}
